<html>
    <head>
        <title>模板语法</title>
    </head>
    <body>
        <script>
            // 模板语法：
                    /*
                        Vue.js使用了基于HMTL的模板语法，允许开发者"声明式"地将DOM绑定至底层Vue实例的数据。
                        所有Vue.js的模板都是盒饭的HTML，所以能被遵循规范的浏览器和HTML解析器解析。

                        在底层实现上，Vue将模板编译成虚拟DOM渲染函数。结合响应系统，Vue能够智能地计算出最少需要重新渲染多少组件，并把DOM操作次数减到最少。

                        如果你熟悉虚拟DOM并偏爱JavaScript的原始力量，你也可以不用模板，直接写渲染(render)函数，使用可选的JSX语法。
                    */


                    // 一、插值语句
                            // ★、文本插值
                                // 数据绑定最常见的形式就是使用"Mustache"语法(双大括号)的文本插值：
                                    <span>Message:{{msg}} </span>
                                    /*
                                            Mustache标签警徽被替代为对应的数据对象上名为 msg 的 property的值。无论何时，绑定的数据对象上 msg 发生了变化，插值处的内容都会更新。 
                                    */

                                    /*
                                            ★、v-once 指令
                                                通过使用v-once指令，你也能执行一次性地插值，当数据改变时，插值处的内容不会更新。
                                                但请留心这会影响都该节点上的其他数据绑定：
                                    */
                                    //   eg:     <span v-once>这个将会会发生改变 ：{{msg}}</span>

                            // ★、HMTL插值
                                    /*
                                        "双大括号"会将数据解释为普通文本，而非HMLT代码。
                                        为了输出真正的HMTL，你需要使用 v-html 指令：
                                    */
                                    // eg:
                                        /*
                                            <p>Using mustache:{{ rawHtml}}</p>                      // 这种方式不能高输出HTML，会把hmtl代码当成文本原样输出
                                            <p>Using v-html: <span v-html="rawHtml"></span></p>     // v-html 指令，相当于 innerHTML属性
                                        */
                                    /*
                                        这个 span 的内容会被替换成 property 值 rawHtml ，直接作为HMTL-----会忽略解析property值中的数据绑定。

                                        注意： 你不能使用 v-html来复合局部模板，因为Vue不是基于字符串的模板引擎。
                                        相反，对于用户界面(UI),组件更适合作为可重用和可组合的基本单位。
                                    */

                                    /*
                                        你的站点上动态渲染的任意HMLT可能会非常危险，因为它很容易导致XSS攻击(跨站脚本攻击)。
                                        请只对可心内容使用HTML插值，绝对不要对用户提供的内容使用HTML插值
                                    */

                            // ★、属性绑定
                                    /*
                                        Mustache 语法不能作用在HTML 的attribute上，遇到这种情况应该使用 v-bind 指令：
                                    */
                                        /*
                                            eg:
                                                <div v-band:id="dynamicId"></div>
                                        */
                                        // ★、 注意：
                                                /*
                                                    对于类型为bool的 attribute(它们只要存在就意味着值为true)，v-bind工作起来略有不同，在这个例子中：
                                                        eg:    <button v-bind:disabled="isButtonDisabled">按钮</button>
                                                               
                                                        如果 isButtonDisabled 的值如果是 null、undefined 或者 false, 则disabled attribute 甚至不会被浩瀚在渲染出来的<button>元素中。
                                                */ 


                            // ★、使用JavaScript表达式
                                    /*
                                        迄今为止，在我们的模板中，我们一直都只绑定简单的property建值。
                                        但实际上，对于所有的数据绑定(文本插入、html插入、属性绑定....)，Vue.js 都提供你了完全的JavaScript表达式支持》
                                    */
                                    // eg:
                                            /*
                                                {{ number +1 }}

                                                {{ ok ? 'YES' : 'NO'}}

                                                {{ message.split('').reverse().join('')}}

                                                <div v-bind:id="'list-'+id"></div>
                                            */
                                    /*
                                        这些表达式会在所属Vue实例的"数据作用域"下作为JavaScript被解析。
                                        注意：  有个限制就是，每个绑定都只能包含单个表达式，所以下麦呢的例子都不会生效
                                    */
                                    // eg:
                                            /*
                                                这不是表达式，是语句，所以不合法
                                                {{ leta a=0 }}

                                                控制流也不会生效，请使用"三元表达式"
                                                {{ if(ok){retturn message}}}
                                            */
                                            
        </script>
    </body>
</html>